package cn.edu.zafu.bigdata.bd121.timer;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * 基于 UDP 的时钟同步程序
 * 要求：
 * 实现一个 UDP 服务端和客户端，客户端请求当前时间，服务端返回服务器的时间。
 * 能够将同学电脑作为服务端，并获取其时间。
 * <p>
 * 此为客户端
 * </p>
 *
 * @author 202211090121
 */
public class TimerClient {

    /**
     * 服务器地址
     */
    private static final String HOST = "localhost";

    /**
     * 服务器端口
     */
    private static final int PORT = 1221;

    public static void main(String[] args) {
        try (DatagramSocket ds = new DatagramSocket()) {
            ds.setSoTimeout(1000);
            ds.connect(InetAddress.getByName(HOST), PORT);

            byte[] data = "time".getBytes();
            DatagramPacket packet = new DatagramPacket(data, data.length);
            ds.send(packet);

            byte[] buffer = new byte[1024];
            packet = new DatagramPacket(buffer, buffer.length);
            ds.receive(packet);
            String res = new String(packet.getData(), packet.getOffset(), packet.getLength());
            System.out.println("服务器时间: " + res);
            ds.disconnect();

        } catch (Exception e) {
            System.err.println("错误: " + e.getMessage());
        }
    }
}
